package com.tedu.egspringbootmvc.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.springframework.stereotype.Component;

@Component
@Aspect
@Slf4j
public class LogAspect {
    @Before("execution(public com.tedu.egspringbootmvc.result.JsonResult com.tedu.egspringbootmvc.controller.*.*(..))")
    public void before(JoinPoint joinPoint){
        String className = joinPoint.getTarget().getClass().getSimpleName();
        String methodName = joinPoint.getSignature().getName();
        log.info(className+"."+methodName+"()方法开始执行");


    }
    @AfterReturning("execution(public com.tedu.egspringbootmvc.result.JsonResult com.tedu.egspringbootmvc.controller.*.*(..))")
    public void afterReturning(JoinPoint joinPoint){
        String className = joinPoint.getTarget().getClass().getSimpleName();
        String methodName = joinPoint.getSignature().getName();
        log.info(className+"."+methodName+"()方法执行完毕");


    }
    @AfterThrowing(value = "execution(public com.tedu.egspringbootmvc.result.JsonResult com.tedu.egspringbootmvc.controller.*.*(..))",throwing = "t")
    public void throwing(JoinPoint joinPoint,Throwable t){
        String className = joinPoint.getTarget().getClass().getSimpleName();
        String methodName = joinPoint.getSignature().getName();
        log.info(className+"."+methodName+"()方法异常"+t.getMessage());


    }
}
